namespace ext.form
{
	using System;
	using System.Runtime.CompilerServices;
	using System.Html;
	using System.Collections;
	
	
	/// <summary>
	/// Provides a convenient wrapper for TextFields that adds a clickable trigger button (looks like a combobox by default).
	/// The trigger has no default action, so you must assign a function to implement the trigger click handler by
	/// overriding {@link #onTriggerClick}. You can create a TriggerField directly, as it renders exactly like a combobox
	/// for which you can provide a custom implementation. For example:
	/// 
	/// var trigger = new Ext.form.TriggerField();
	/// trigger.onTriggerClick = myTriggerFn;
	/// trigger.applyToMarkup(&apos;my-field&apos;);
	/// 
	///
	/// However, in general you will most likely want to use TriggerField as the base class for a reusable component.
	/// {@link Ext.form.DateField} and {@link Ext.form.ComboBox} are perfect examples of this.
	/// </summary>
	/// <htmlSummary>
	/// Provides a convenient wrapper for TextFields that adds a clickable trigger button (looks like a combobox by default).
	/// The trigger has no default action, so you must assign a function to implement the trigger click handler by
	/// overriding {@link #onTriggerClick}. You can create a TriggerField directly, as it renders exactly like a combobox
	/// for which you can provide a custom implementation. For example:
	/// &lt;pre&gt;&lt;code&gt;
	/// var trigger = new Ext.form.TriggerField();
	/// trigger.onTriggerClick = myTriggerFn;
	/// trigger.applyToMarkup(&apos;my-field&apos;);
	/// &lt;/code&gt;&lt;/pre&gt;
	///
	/// However, in general you will most likely want to use TriggerField as the base class for a reusable component.
	/// {@link Ext.form.DateField} and {@link Ext.form.ComboBox} are perfect examples of this.
	/// </htmlSummary>
	/// <definedin>src\widgets\form\TriggerField.js</definedin>
	[ScriptName("TriggerField")]
	[ScriptNamespace("Ext.form")]
	[Imported()]
	public partial class TriggerField : ext.form.TextField
	{
		
		#region Constructors
		/// <summary>Constructor</summary>
		/// <param name="config">
		/// Configuration options (valid {@Ext.form.TextField} config options will also be applied
		/// to the base TextField)
		/// </param>
		public TriggerField(ext.form.TriggerField_Configuration config)
		{
		}
		
		/// <summary>Constructor</summary>
		public TriggerField()
		{
		}
		#endregion
		
		#region Fields
		/// <summary>
		/// An additional CSS class used to style the trigger button. The trigger will always get the
		/// class &apos;x-form-trigger&apos; by default and triggerClass will be appended if specified.
		/// </summary>
		/// <htmlSummary>
		/// An additional CSS class used to style the trigger button. The trigger will always get the
		/// class &lt;tt&gt;&apos;x-form-trigger&apos;&lt;/tt&gt; by default and &lt;tt&gt;triggerClass&lt;/tt&gt; will be &lt;b&gt;appended&lt;/b&gt; if specified.
		/// </htmlSummary>
		/// <definedin>src\widgets\form\TriggerField.js</definedin>
		[ScriptName("triggerClass")]
		public string TriggerClass;
		
		/// <summary>
		/// A {@link Ext.DomHelper DomHelper} config object specifying the structure of the
		/// trigger element for this Field. (Optional).  Specify this when you need a customized element to act as the trigger button for a TriggerField.  Note that when using this option, it is the developer&apos;s responsibility to ensure correct sizing, positioning
		/// and appearance of the trigger. Defaults to:  {tag: &quot;img&quot;, src: Ext.BLANK_IMAGE_URL, cls: &quot;x-form-trigger &quot; + this.triggerClass}
		/// </summary>
		/// <htmlSummary>
		/// &lt;p&gt;A {@link Ext.DomHelper DomHelper} config object specifying the structure of the
		/// trigger element for this Field. (Optional).&lt;/p&gt;
		/// &lt;p&gt;Specify this when you need a customized element to act as the trigger button for a TriggerField.&lt;/p&gt;
		/// &lt;p&gt;Note that when using this option, it is the developer&apos;s responsibility to ensure correct sizing, positioning
		/// and appearance of the trigger. Defaults to:&lt;/p&gt;
		/// &lt;pre&gt;&lt;code&gt;{tag: &quot;img&quot;, src: Ext.BLANK_IMAGE_URL, cls: &quot;x-form-trigger &quot; + this.triggerClass}&lt;/code&gt;&lt;/pre&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\form\TriggerField.js</definedin>
		[ScriptName("triggerConfig")]
		public object TriggerConfig;
		
		/// <summary>
		/// A {@link Ext.DomHelper DomHelper} element spec, or true for a default
		/// element spec. Used to create the {@link Ext.Component#getEl Element} which will encapsulate this Component.
		/// See {@link Ext.Component#autoEl autoEl} for details. Defaults to:  {tag: &quot;input&quot;, type: &quot;text&quot;, size: &quot;16&quot;, autocomplete: &quot;off&quot;}
		/// </summary>
		/// <htmlSummary>
		/// &lt;p&gt;A {@link Ext.DomHelper DomHelper} element spec, or true for a default
		/// element spec. Used to create the {@link Ext.Component#getEl Element} which will encapsulate this Component.
		/// See &lt;tt&gt;{@link Ext.Component#autoEl autoEl}&lt;/tt&gt; for details. Defaults to:&lt;/p&gt;
		/// &lt;pre&gt;&lt;code&gt;{tag: &quot;input&quot;, type: &quot;text&quot;, size: &quot;16&quot;, autocomplete: &quot;off&quot;}&lt;/code&gt;&lt;/pre&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\form\TriggerField.js</definedin>
		[ScriptName("autoCreate")]
		public ext.auto.System_String_Or_System_Object AutoCreate;
		
		/// <summary>
		/// true to hide the trigger element and display only the base
		/// text field (defaults to false)
		/// </summary>
		/// <htmlSummary>
		/// &lt;tt&gt;true&lt;/tt&gt; to hide the trigger element and display only the base
		/// text field (defaults to &lt;tt&gt;false&lt;/tt&gt;)
		/// </htmlSummary>
		/// <definedin>src\widgets\form\TriggerField.js</definedin>
		[ScriptName("hideTrigger")]
		public bool HideTrigger;
		
		/// <summary>
		/// false to prevent the user from typing text directly into the field,
		/// the field will only respond to a click on the trigger to set the value. (defaults to true).
		/// </summary>
		/// <htmlSummary>
		/// &lt;tt&gt;false&lt;/tt&gt; to prevent the user from typing text directly into the field,
		/// the field will only respond to a click on the trigger to set the value. (defaults to &lt;tt&gt;true&lt;/tt&gt;).
		/// </htmlSummary>
		/// <definedin>src\widgets\form\TriggerField.js</definedin>
		[ScriptName("editable")]
		public bool Editable;
		
		/// <summary>
		/// true to prevent the user from changing the field, and
		/// hides the trigger. Superceeds the editable and hideTrigger options if the value is true.
		/// (defaults to false)
		/// </summary>
		/// <htmlSummary>
		/// &lt;tt&gt;true&lt;/tt&gt; to prevent the user from changing the field, and
		/// hides the trigger. Superceeds the editable and hideTrigger options if the value is true.
		/// (defaults to &lt;tt&gt;false&lt;/tt&gt;)
		/// </htmlSummary>
		/// <definedin>src\widgets\form\TriggerField.js</definedin>
		[ScriptName("readOnly")]
		public bool ReadOnly;
		
		/// <summary>
		/// The class added to the to the wrap of the trigger element. Defaults to
		/// x-trigger-wrap-focus.
		/// </summary>
		/// <htmlSummary>
		/// The class added to the to the wrap of the trigger element. Defaults to
		/// &lt;tt&gt;x-trigger-wrap-focus&lt;/tt&gt;.
		/// </htmlSummary>
		/// <definedin>src\widgets\form\TriggerField.js</definedin>
		[ScriptName("wrapFocusClass")]
		public string WrapFocusClass;
		
		/// <summary>@hide</summary>
		/// <definedin>src\widgets\form\TriggerField.js</definedin>
		[ScriptName("grow")]
		public bool Grow;
		
		/// <summary>@hide</summary>
		/// <definedin>src\widgets\form\TriggerField.js</definedin>
		[ScriptName("growMin")]
		public System.Number GrowMin;
		
		/// <summary>@hide</summary>
		/// <definedin>src\widgets\form\TriggerField.js</definedin>
		[ScriptName("growMax")]
		public System.Number GrowMax;
		#endregion
		
		#region Methods
		/// <summary>Changes the hidden status of the trigger.</summary>
		/// <definedin>src\widgets\form\TriggerField.js</definedin>
		/// <param name="hideTrigger">True to hide the trigger, false to show it.</param>
		[ScriptName("setHideTrigger")]
		public void SetHideTrigger(bool hideTrigger)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Allow or prevent the user from directly editing the field text. If false is passed,
		/// the user will only be able to modify the field using the trigger. Will also add
		/// a click event to the text field which will call the trigger. This method
		/// is the runtime equivalent of setting the {@link #editable} config option at config time.
		/// </summary>
		/// <definedin>src\widgets\form\TriggerField.js</definedin>
		/// <param name="value">True to allow the user to directly edit the field text.</param>
		[ScriptName("setEditable")]
		public void SetEditable(bool value)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Setting this to true will supersede settings {@link #editable} and {@link #hideTrigger}.
		/// Setting this to false will defer back to {@link #editable} and {@link #hideTrigger}. This method
		/// is the runtime equivalent of setting the {@link #readOnly} config option at config time.
		/// </summary>
		/// <definedin>src\widgets\form\TriggerField.js</definedin>
		/// <param name="value">
		/// True to prevent the user changing the field and explicitly
		/// hide the trigger.
		/// </param>
		[ScriptName("setReadOnly")]
		public void SetReadOnly(bool value)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// The function that should handle the trigger&apos;s click event. This method does nothing by default
		/// until overridden by an implementing function. See Ext.form.ComboBox and Ext.form.DateField for
		/// sample implementations.
		/// </summary>
		/// <definedin>src\widgets\form\TriggerField.js</definedin>
		/// <param name="e"></param>
		[ScriptName("onTriggerClick")]
		public void OnTriggerClick(ext.EventObject e)
		{
			throw new System.Exception("Imported - not implemented");
		}
		#endregion
	}
}
